package recursos;

import java.awt.Image.*;
import javax.swing.*;
import java.awt.*;
import java.awt.print.PrinterJob;
import java.text.SimpleDateFormat;
import java.util.Locale;
import java.util.Date;

/********************************************************************
 *	La siguiente clase llamada "Impresora", es la encargada de  	*
 *	establecer la fuente con que se va a imprimir, de obtener el	*
 *	trabajo de impresion, la página. En esta clase hay un método	*
 *	llamado imprimir, el cual recibe una cadena y la imprime.	*
 ********************************************************************/
public class Impresora {

    Font fuente1 = new Font("CALIBRI", Font.BOLD, 10);
    Font fuente2 = new Font("CALIBRI", Font.BOLD, 10);
    Font fuente3 = new Font("CALIBRI", Font.BOLD, 10);
    Font fuente4 = new Font("CALIBRI", Font.BOLD, 10);
    Font fuente5 = new Font("CALIBRI", Font.BOLD, 10);
    Font muniFuente = new Font("ARIAL BLACK", Font.BOLD, 9);
    Font buenosAiresFuente = new Font("CALIBRI", Font.BOLD, 8);
    Font credencialFuente = new Font("LUCIDA SANS UNICODE", Font.BOLD, 12);
    Font controlFuente = new Font("CALIBRI", Font.PLAIN, 11);
    Font apellidoFuente = new Font("CALIBRI", Font.PLAIN, 8);
    Font nombreFuente = new Font("CALIBRI", Font.PLAIN, 8);
    Font docFuente = new Font("CALIBRI", Font.PLAIN, 8);
    Font cargoFuente = new Font("CALIBRI", Font.PLAIN, 8);
    Font firmaTitularFuente = new Font("CALIBRI", Font.PLAIN, 8);
    Font pilarFuente = new Font("CALIBRI", Font.BOLD, 11);
    Font fechaFuente = new Font("CALIBRI", Font.PLAIN, 8);
    Font firmaIntendenteFuente = new Font("CALIBRI", Font.PLAIN, 8);
    PrintJob pj;
    Graphics pagina;
//    private Image foto;
//    static ImageIO imageIO;

        // ojeto formateador simpledateformat
    SimpleDateFormat formateador = new SimpleDateFormat("dd 'de' MMMM ', ' yyyy", new Locale("ES"));

    // Objeto date
    Date fechaDate = new Date();

    // Formatea la fecha usando el formateador y pasándole como argumento el objeto Date
    String fecha = formateador.format(fechaDate);

    /********************************************************************
     *	A continuación el constructor de la clase. Aquí lo único que	*
     *	hago es tomar un objeto de impresion.				*
     ********************************************************************/
    public Impresora() {
        pj = Toolkit.getDefaultToolkit().getPrintJob(new Frame(), "SCAT", null);
    }

    public void imprimir(CarnetLayout c) {

        try {

            c.layoutImprimir();

            pagina = pj.getGraphics();
            pagina.setColor(Color.black);

            // rectangulo
            pagina.drawRect(20, 20, 507, 165);

            // cadena img escudo
            //pagina.drawImage(c.getEscudo(), 35, 35, null);
            pagina.drawImage(c.getEscudo(), 35, 35, null);

            // cadena img foto
            pagina.drawImage(c.getFoto(), 30, 80, null);         

            pagina.setFont(muniFuente);
            pagina.drawString(c.getMunicipalidad(), 70, 50);

            pagina.setFont(buenosAiresFuente);
            pagina.drawString(c.getBuenosAires(), 70, 60);

            pagina.setFont(credencialFuente);
            pagina.drawString(c.getCredencial(), 135, 80);
            
            pagina.setFont(apellidoFuente);
            pagina.drawString(c.getApellido(), 135, 110);
            
            pagina.setFont(nombreFuente);
            pagina.drawString(c.getNombre(), 135, 130);
            
            pagina.setFont(docFuente);
            pagina.drawString(c.getDoc(), 135, 150);
            
            pagina.setFont(cargoFuente);
            pagina.drawString(c.getCargo(), 135, 170);


            // cadena 1 - apellido
            pagina.setFont(fuente1);
            pagina.drawString(c.getCadena1(), 180, 110);

            // cadena 2 - nombre
            pagina.setFont(fuente2);
            pagina.drawString(c.getCadena2(), 180, 130);

            // cadena 3 - doc
            pagina.setFont(fuente3);
            pagina.drawString(c.getCadena3(), 180, 150);

            // cadena 5 - cargo
            pagina.setFont(fuente5);
            pagina.drawString(c.getCadena5(), 180, 170);


            // control
            pagina.setFont(controlFuente);
            pagina.drawString(c.getControl(), 450, 55);

            // firma titular
            pagina.setFont(firmaTitularFuente);
            pagina.drawString(c.getFirmaTitular(), 320, 90);

            // linea de firma
            pagina.setFont(credencialFuente);
            pagina.drawLine(295, 80, 425, 80);

            // pilar,
            pagina.setFont(pilarFuente);
            pagina.drawString(c.getPilar(), 295, 125);

            // fecha
            pagina.setFont(buenosAiresFuente);
            pagina.drawString(fecha, 330, 120);

            //linea fecha
            pagina.setFont(credencialFuente);
            pagina.drawLine(320, 125, 500, 125);

            // firma intendente
            pagina.setFont(firmaIntendenteFuente);
            pagina.drawString(c.getFirmaIntendente(), 380, 170);

            // linea firma intendente
            pagina.setFont(credencialFuente);
            pagina.drawLine(380, 160, 500, 160);

            pagina.dispose();
            pj.end();
        } catch (Exception e) {
            System.out.println("LA IMPRESION HA SIDO CANCELADA...");
            System.out.println(e);
        }

    }
//
//    /**
//     * @return the foto
//     */
//    public Image getFoto() {
//        return foto;
//    }
//
//    /**
//     * @param foto the foto to set
//     */
//    public void setFoto(Image foto) {
//        this.foto = foto;
//    }

    /*
    public void imprimir(String Cadena1, String Cadena2) {

    try {
    pagina = pj.getGraphics();
    pagina.setColor(Color.black);
    pagina.setFont(fuente1);

    pagina.drawString(Cadena1, 60, 60);

    pagina.setFont(fuente2);
    pagina.drawString(Cadena2, 90, 60);



    Image resized = resize(bufferedImage, 100, 100);
    //pagina.drawImage(bufferedImage, 100, 100, null);
    pagina.drawImage(resized, 200, 200, null);


    pagina.dispose();
    pj.end();
    } catch (Exception e) {
    System.out.println("LA IMPRESION HA SIDO CANCELADA...");
    }
    }//FIN DEL PROCEDIMIENTO imprimir(String...)
     */
}//FIN DE LA CLASE Impresora
//A CONTINUACION LA CLASE PRINCIPAL

